package homework.level01model04.homework04;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintStream;
import java.net.Socket;

public class UserMessageClient {
//socket对象
    //发出请求
    //io传输
    //关闭socket
    /*
    * 使用基于 tcp 协议的编程模型实现将 UserMessage 类型对象由客户端发送给服务器；
  服 务 器接 收到 对象 后判 断 用户 对象 信息 是否 为 "admin" 和 "123456"，
  * 若 是则 将 UserMessage 对象中的类型改为"success"，否则将类型改为"fail"并回发给客户端，
  * 客户 端接收到服务器发来的对象后判断并给出登录成功或者失败的提示。
  其中 UserMessage 类的特征有：类型(字符串类型) 和 用户对象(User 类型)。
  其中 User 类的特征有：用户名、密码(字符串类型)。
  如： UserMessage tum = new UserMessage("check", new User("admin", "123456"));
    *
    *
    * */

    public static void main(String[] args) {
        UserMessage userMessage = new UserMessage("check", new User("admin", "123456"));
        System.out.println("输入的用户名和密码为："+userMessage.getUser().getName()+userMessage.getUser().getPassword());
        Socket socket = null;
        ObjectOutputStream objectOutputStream = null;
        ObjectInputStream objectInputStream = null;
        try {
            socket = new Socket("127.0.0.1",8888);
            System.out.println("连接服务器成功");

            //io传输
            Thread.sleep(1000);

            //发出对象
             objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
            objectOutputStream.writeObject(userMessage);
            System.out.println("发送成功");

            objectInputStream = new ObjectInputStream(socket.getInputStream());
            Object o = objectInputStream.readObject();
            UserMessage o1 = (UserMessage) o;
            System.out.println("接收消息成功");
            System.out.println(o1.getType());


        } catch (IOException | InterruptedException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null !=objectInputStream){
                    objectInputStream.close();
                }
                if (null !=objectOutputStream ){
                    objectOutputStream. close();
                }
                if (null != socket){

                    socket.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}
